<?php

class ArraytoFile {
	
	/** 

	 * 将一个数组写入文件 

	 * 

	 * $file 文件路径 

	 * $array 需要写入文件的数组 

	 * $arrayName 缓存文件中该数组的名称 

	 */
	
	final public function setArrayFile($file, $array, $array_name) {
		if ($array && $file && $array_name) {
			file_put_contents ( $file, '<?php $' . $array_name . '=' . $this->_arrayToStr ( $array ) . '; ?>' );
		}
	}
	
	final public function setClassFile($file, $array, $class_name) {
		if ($array && $file && $class_name) {
			$arr_str = $this->_arrayToStr ( $array );
			$cls_str = 	$this->_getFunTemp($class_name,$arr_str);		
		}
		file_put_contents($file,$cls_str);	
	}
	
	final  private function _getFunTemp($className,$array){
		$str = "<?php
		    class $className {
			
			public function getArray(){
				return $array ;			
			}			
		}";
		return $str;
		
	}
	
	/** 

	 * 将一个数组还原为字符串 

	 * 

	 * $array 数组 

	 */
	
	private function _arrayToStr($array) {
		if (is_string ( $array )) {
			return '\'' . str_replace ( '\'', '\\\'', $array ) . '\'';
		}
		if (is_numeric ( $array )) {
			return $array;
		}
		if (is_bool ( $array )) {
			return $array ? 'true' : 'false';
		}
		if (is_null ( $array )) {
			return '\'\'';
		}
		$arrayStr = '';
		$i = 0;
		foreach ( $array as $key => $value ) {
			$str = (is_string ( $key ) ? '\'' . $key . '\'' : $key) . '=>' . $this->_arrayToStr ( $value );
			$arrayStr .= $i == 0 ? "\r\n" . $str : "," . "\r\n" . $str;
			$i ++;
		}
		return 'array(' . $arrayStr . ')';
	}

}